import path from 'path';
import fs from 'fs';

export class KFile {
    /**
     * 构造方法
     * @param {string} absoluteFilePath 文件绝对路径
     */
    constructor(absoluteFilePath) {
        /** 路径 */
        this.path = {
            /** 当前文件所在目录绝对路径 */
            dir: path.dirname(absoluteFilePath),
            /** 当前文件绝对路径 */
            current: absoluteFilePath,
        };

        /** 名称 */
        this.name = {
            /** 当前文件所在目录名称 */
            dir: this.path.dir.substring(path.dirname(this.path.dir).length + 1),
            /** 当前文件名称 */
            current: path.basename(absoluteFilePath),
            /** 当前文件扩展名 */
            ext: path.extname(absoluteFilePath),
        };

        /** 当前文件去除扩展名名称 */
        this.name.withoutExt = this.name.ext === '' ? this.name.current : this.name.current.slice(0, -this.name.ext.length);
        /** 当前文件去除扩展名绝对路径 */
        this.path.withoutExt = path.join(this.path.dir, this.name.withoutExt);

        /** 当前文件是否存在 */
        this.exists = fs.existsSync(absoluteFilePath);

        if (this.exists) {
            const stat = fs.statSync(absoluteFilePath);
            this.isFile = stat.isFile();
            this.isDirectory = stat.isDirectory();
        } else {
            this.isFile = false;
            this.isDirectory = false;
        }
    }
}
